static void

Asp.Net Core- Not Ready Yet

Published Monday 08 February 2016

Note: this is written in February 2016. If you read this in summer 2016 or later, it's ancient history, just ignore.

There's a lot of buzz about the new Asp.Net Core (previously Asp.Net 5) - blog posts, articles and tweets from enthusiastic developers.

It's nice to see Microsoft being open, and to be able to see the git pull requests. RC1 is out and it has a "Go Live" license- Microsoft says you start using it in production.

Don't use this in production. Don't start your next project with it. You probably don't want to spend too much time playing with it for a few months. It's not ready. It's still changing.

As of start February 2016, the blogs and the official docs still refer to "dnx" and "dnu", which will be as dead as the old "k" stuff from a year ago. Want to try the new "dotnet.exe"? All you can do is a "hello world" console with this: http://dotnet.github.io/getting-started/. The promise is great- this will integrate with the .net native efforts, which for now is vapourware. You can't use it with asp.net core yet, even if you take the unstable RC2 packages- the work hasn't been done (check those pull requests). The best information about it was at the NDC conference (video now available).

There's a lot of changes in MVC APIs between RC1 and the unstable RC2 stuff - and there's more changes coming. There's little or no documentation about it yet outside of the github issues and raw pull requests.

Even the project.json structure will be changing. The tooling packages that got lumped in with runtime references in "dependencies" may be separated into "tools", and there may be other changes. The "dnx451" and "dnxcore50" targets are being renamed (I think to "net" and "netstandardapp"). There's some discussion about this (see the video), but as yet nothing is committed to github, let alone documented.

The visual studio tooling is still incomplete and weak. The only testing framework is XUnit (still via a MS fork I think). We've known for some time that Entity Framework Core (was EF7) won't be fully ready even at release (the big one: no lazy loading; "the lack of these features will make EF6.x a better option"). The ADO GetSchema side (needed for any other ORM) has only just started to get a design.

RC1 is nowhere near being what we'd normally call a "release candidate". RC2 might be feature complete- but there's still a lot of churn going on. RC2 was planned for end February 2016 (with RTM end March), but the dates have recently changed to "TBD".

Unless you're working on a popular nuget library, I don't think it's worth investing much time playing with or learning Asp.Net Core just yet. After we get a stable RC2 we can play with the new toys. For "real work", ignore any more "Go Live" licenses - wait until the RTM. I suspect it may be sensible to wait until v1.1 until shifting fully into the new framework.

The multi-targeting (windows/max/linux) is a nice new feature, but no-one is going to ditch all their windows servers. Some of us remember similar things being said about Silverlight, and a few people jumped for that too. My inclination is to dump the restricted "dot net core" experience and run it on full .net 4.6 framework so we can use EF 6, existing libraries and ADO providers, but still benefit from xproj and the new asp stack. Fortunately that's a nice "transitional" story.

Don't get me wrong - this is a positive direction for .net, with lots of very welcome changes. But it's a huge change which is still ongoing. The new open source Microsoft, coupled with some clumsy marketing, means we're looking at something not fully cooked. If you're enthusiastic about the new changes, save yourself some frustration and wait a few more months.

Previously: Visual Studio 2015 Update 1 woes (26 Jan 2016)